package com.cloudeasy.area.repository;

import com.cloudeasy.area.po.Area;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.repository.MongoRepository;

import java.util.List;

public interface AreaRepository extends MongoRepository<Area, String> {
    /**
     * 根据Id列表查找记录
     *
     * @param ids Id列表
     * @return {@link List<Area>}
     */
    List<Area> findAllByIdInOrderByItemCount(List<String> ids);

    /**
     * 根据Id列表分页查找记录
     *
     * @param ids      Id列表
     * @param pageable {@link Pageable}
     * @return {@link Page<Area>}
     */
    Page<Area> findAllByIdInOrderByItemCount(List<String> ids, Pageable pageable);

    /**
     * 根据名称查找记录
     *
     * @param name 名称
     * @return {@link List<Area>}
     */
    List<Area> findAllByNameContainingOrderByItemCount(String name);

    /**
     * 根据名称分页查找记录
     *
     * @param name     名称
     * @param pageable {@link Pageable}
     * @return {@link Page<Area>}
     */
    Page<Area> findAllByNameContainingOrderByItemCount(String name, Pageable pageable);

    /**
     * 删除可以删除的记录
     *
     * @param id        Id
     * @param itemCount 条件，项数
     */
    void deleteAreaByIdAndItemCountEquals(String id, Integer itemCount);

    /**
     * 判断是否存在名称
     *
     * @param name 名称
     * @return {@link Boolean}
     */
    Boolean existsByName(String name);
}
